BIN := mytest

# 自动查找当前目录下所有的 .c 文件
SRC := $(wildcard *.c)

# 根据 .c 文件生成对应的 .o 文件列表
OBJ := $(SRC:.c=.o)

# 编译器，可根据需要替换为其他编译器
CC := gcc

# 编译选项，可根据需要添加更多选项
CFLAGS := -Wall -Werror

# 删除命令
RM := rm -f

# 链接生成可执行文件的规则
$(BIN): $(OBJ)
	$(CC) $(CFLAGS) $^ -o $@

# 编译 .c 文件生成 .o 文件的规则
%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@
	@echo "编译 $< -> $@"

# 清理规则，用于删除生成的 .o 文件和可执行文件
.PHONY: clean
clean:
	$(RM) $(OBJ) $(BIN)

# 测试规则，用于打印相关变量的值
.PHONY: test
test:
	@echo "可执行文件: $(BIN)"
	@echo "源文件列表: $(SRC)"
	@echo "目标文件列表: $(OBJ)"
